package com.tom.architect02.ui30.day22;

import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.tom.architect02.R;

/**
 * Added by Tom on 2024/06/20.
 */
public class ListScreenMenuAdapter extends BaseMenuAdapter {
    private Context mContext;
    private String[] mItems = {"类型", "品牌", "价格", "更多"};
    public ListScreenMenuAdapter(Context context) {
        this.mContext = context;
    }

    @Override
    public int getCount() {
        return mItems.length;
    }

    @Override
    public View getTabView(int position, ViewGroup parent) {
        // 菜单栏目
        TextView tabView = (TextView) LayoutInflater.from(mContext).inflate(R.layout.ui_list_data_screen_tab, parent, false);
        tabView.setText(mItems[position]);
        tabView.setTextColor(Color.BLACK);
        return tabView;
    }

    @Override
    public View getMenuView(int position, ViewGroup parent) {
        // TODO 真正开发过程中，不同的位置显示的布局不一样，根据position 加载不同的菜单View。
        // switch-case：处理不同的显示样式。
        TextView menuView = (TextView) LayoutInflater.from(mContext).inflate(R.layout.ui_list_data_screen_menu, parent, false);
        menuView.setText(mItems[position]);
        // 点击选择菜单中内容，关闭菜单
        menuView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext, "关闭菜单", Toast.LENGTH_LONG).show();
                // Adapter如何 调用 ListDataScreenView的关闭菜单方法？
                closeMenu(); // 给所有订阅者发送消息。关闭菜单选择栏。
                if (mSelectMenuListener != null) {
                    // TODO 获取菜单中具体选择的内容，回调给Activity 进一步处理。
                    String menuName = menuView.getText().toString();
                    mSelectMenuListener.onSelectMenuItem(position, menuName);
                }
            }
        });
        return menuView;
    }

    @Override
    public void menuClose(View tabView) {
        // 当前tab关闭。
        // 菜单关闭了，菜单样式修改。
        TextView tabTv = (TextView) tabView;
        tabTv.setTextColor(Color.BLACK);
        tabTv.setTypeface(Typeface.DEFAULT);
    }

    @Override
    public void menuOpen(View tabView) {
        // 菜单打开，菜单样式修改。tab变颜色、箭头样式、背景。
        // 58同城：通过findViewById获取箭头，处理箭头的样式。
        TextView tabTv = (TextView) tabView;
        tabTv.setTextColor(Color.RED);
        tabTv.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
    }

    //region 接口回调三件套
    public OnSelectMenuListener mSelectMenuListener;
    public interface OnSelectMenuListener {
        void onSelectMenuItem(int tabPosition, String text);
    }
    public void setOnSelectMenuListener(OnSelectMenuListener listener) {
        mSelectMenuListener = listener;
    }
    //endregion

}
